package org.springframework.boot.autoconfigure.mock.annotation;

import org.springframework.boot.autoconfigure.mock.model.MockResTypeEnum;

import java.lang.annotation.ElementType;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Retention;
import java.lang.annotation.Documented;
import java.lang.annotation.Target;

/**
 * @author: hooware
 * @Date: 2021/12/26 17:09
 * @Description: mock response 注解
 */
@Documented
@Target(value = {ElementType.METHOD})
@Retention(value = RetentionPolicy.RUNTIME)
public @interface MockResponse {

    /**
     * 是否启用当前mock响应
     */
    boolean require() default false;

    /**
     * 指定需要mock的数据路径或者json response数据
     */
    String value() default "";

    /**
     * 获取mock响应的prepare类
     */
    Class<?> clazz() default Void.class;

    /**
     * 获取mock响应的prepare类方法
     */
    String method() default "";

    /**
     * 获取mock响应的prepare类方法参数数组, 当前仅仅支持字符串类型参数列表
     */
    String[] params() default {};

    /**
     * mock响应类型配置, 默认走配置文件方式响应
     */
    MockResTypeEnum mockResTypeEnum() default MockResTypeEnum.PROP;
}
